package com.eva.admin.biz.system;

import com.eva.admin.dao.system.SystemMaterialMapper;
import com.eva.framework.common.model.PageData;
import com.eva.framework.common.model.PageWrap;
import com.eva.framework.mp.utils.PageUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.eva.admin.dao.system.dto.QuerySystemMaterialDTO;
import com.eva.admin.biz.system.dto.CreateSystemMaterialDTO;
import com.eva.admin.biz.system.dto.UpdateSystemMaterialDTO;
import com.eva.dao.system.model.SystemMaterial;
import com.eva.admin.dao.system.vo.SystemMaterialVO;
import com.eva.service.system.SystemMaterialService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;

import javax.annotation.Resource;
import java.util.List;

@Service
public class SystemMaterialBiz {

    @Resource
    private SystemMaterialMapper materialMapper;

    @Resource
    private SystemMaterialService materialService;

    /**
     * 创建
     *
     * @param dto 字段信息
     * @return 主键
     */
    @Transactional
    public Integer create(CreateSystemMaterialDTO dto) {
        // TODO 验证
        // 创建素材
        SystemMaterial newRecord = new SystemMaterial();
        BeanUtils.copyProperties(dto, newRecord);
        return materialService.create(newRecord);
    }

    /**
     * 根据主键删除
     *
     * @param id 主键
     */
    @Transactional
    public void deleteById(Integer id) {
        // TODO 验证
        materialService.deleteById(id);
    }

    /**
     * 批量根据主键删除
     *
     * @param ids 主键集合
     */
    @Transactional
    public void deleteByIdInBatch(List<Integer> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        for (Integer id : ids) {
            materialService.deleteById(id);
        }
    }

    /**
     * 根据主键更新
     *
     * @param dto 更新后的字段信息
     */
    @Transactional
    public void updateById(UpdateSystemMaterialDTO dto) {
        // TODO 验证
        // 修改素材
        SystemMaterial newRecord = new SystemMaterial();
        BeanUtils.copyProperties(dto, newRecord);
        materialService.updateById(newRecord);
    }

    /**
     * 分页查询
     *
     * @param pageWrap 分页参数
     * @return 分页数据
     */
    public PageData<SystemMaterialVO> findPage(PageWrap<QuerySystemMaterialDTO> pageWrap) {
        PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
        List<SystemMaterialVO> result = materialMapper.search(pageWrap.getModel());
        return PageUtil.from(new PageInfo<>(result));
    }
}
